//package com.pkx.guide.socket;
//
//import java.util.concurrent.ArrayBlockingQueue;
//import java.util.concurrent.BlockingQueue;
//
//public class ProducerConsumerDemo {
//    // 定义阻塞队列作为缓冲区（容量为10）
//    private static final BlockingQueue<String> queue = new ArrayBlockingQueue<>(10);
//
//    // 生产者线程：向队列中放入数据
//    static class Producer implements Runnable {
//        private int count = 0;
//
//        @Override
//        public void run() {
//            try {
//                while (true) {
//                    count++;
//                    String data = "数据-" + count;
//                    queue.put(data); // 若队列满则阻塞等待
//                    System.out.println("生产者[" + Thread.currentThread().getName() + "]生产：" + data);
//                    Thread.sleep(500); // 模拟生产耗时
//                }
//            } catch (InterruptedException e) {
//                Thread.currentThread().interrupt();
//            }
//        }
//    }
//
//    // 消费者线程：从队列中取数据
//    static class Consumer implements Runnable {
//        @Override
//        public void run() {
//            try {
//                while (true) {
//                    String data = queue.take(); // 若队列空则阻塞等待
//                    System.out.println("消费者[" + Thread.currentThread().getName() + "]消费：" + data);
//                    Thread.sleep(1000); // 模拟消费耗时
//                }
//            } catch (InterruptedException e) {
//                Thread.currentThread().interrupt();
//            }
//        }
//    }
//
//    public static void main(String[] args) {
//        // 启动1个生产者和2个消费者
//        new Thread(new Producer(), "P1").start();
//        new Thread(new Consumer(), "C1").start();
//        new Thread(new Consumer(), "C2").start();
//    }
//}